"""
Created on 28 Feb 2021
@fake_author:JemusD

"""

"""
函数说明：
    加载词向量和标签

 Parameters:
    None
    
Returns:
    postingList - 实验样本切分的词条
    classVec - 类别标签向量

Modify:
    2021-02-28   
"""
def loadDataSet():
    postingList = [['my', 'dog', 'has', 'flea', 'problems', 'help', 'please'],
                   ['maybe', 'not', 'take', 'him', 'to', 'dog', 'park', 'stupid'],
                   ['my', 'dalmation', 'is', 'so', 'cute', 'I', 'love', 'him'],
                   ['stop', 'posting', 'stupid', 'worthless', 'garbage'],
                   ['mr', 'licks', 'ate', 'my', 'steak', 'how', 'to', 'stop', 'him'],
                   ['quit', 'buying', 'worthless', 'dog', 'food', 'stupid']]
    
    classVec = [0, 1, 0, 1, 0, 1]
    return postingList, classVec


"""
函数说明：
    将切分的词向量去重后放在一起
    
 Parameters:
    dataSet - 已经切分的词向量
    
Returns:
    list(vocabSet) - 去重后的合到一起的词汇表

Modify:
    2021-02-28   
"""
def createVocabList(dataSet):
    vocabSet = set([])
    for document in dataSet:
        vocabSet = vocabSet | set(document)
    return list(vocabSet)

"""
函数说明：
    看inputSet中的词汇有在vocabList中没有，有对应位置记为1
    
 Parameters:
    vocabList - 整理好的去重的词汇表
    inputSet - 语句需要分析的词向量
    
Returns:
    returnVec - 一个01数组，1就是表示inputSet中的词汇在vocabList中的1对应位置[0,0,0,1,0,0,1,1,1,1,1,0,0]

Modify:
    2021-02-28   
"""
def setOfWords2Vec(vocabList, inputSet):
    returnVec = [0] * len(vocabList)
    for word in inputSet:
        if word in vocabList:
            returnVec[vocabList.index(word)] = 1
        else:
            print("the word: %s is not in my Vocabulary" % word)
    return returnVec

